home *** CD-ROM | disk | FTP | other *** search
- #!/home/stone/garfield/bin/X386/epwish -f
- # Program: fbrowser
- # Tcl version: 6.6 (Tcl/Tk/XF)
- # Tk version: 3.1
- # XF version: 2.1
- #
-
- # module inclusion
- global env
- global xfLoadPath
- if {[info exists env(XF_LOAD_PATH)]} {
- if {[string first $env(XF_LOAD_PATH) /usr/local/lib/] == -1} {
- set xfLoadPath $env(XF_LOAD_PATH):/usr/local/lib/
- } {
- set xfLoadPath /usr/local/lib/
- }
- } {
- set xfLoadPath /usr/local/lib/
- }
-
- global argc
- global argv
- global tkVersion
- global xfLoadInfo
- global xfLoadPath
- set xfLoadInfo 0
- set tmpArgv ""
- for {set counter 0} {$counter < $argc} {incr counter 1} {
- case [string tolower [lindex $argv $counter]] in {
- {-xfloadpath} {
- incr counter 1
- set xfLoadPath "[lindex $argv $counter]:$xfLoadPath"
- }
- {-xfstartup} {
- incr counter 1
- source [lindex $argv $counter]
- }
- {-xfbindfile} {
- incr counter 1
- set env(XF_BIND_FILE) "[lindex $argv $counter]"
- }
- {-xfcolorfile} {
- incr counter 1
- set env(XF_COLOR_FILE) "[lindex $argv $counter]"
- }
- {-xfcursorfile} {
- incr counter 1
- set env(XF_CURSOR_FILE) "[lindex $argv $counter]"
- }
- {-xffontfile} {
- incr counter 1
- set env(XF_FONT_FILE) "[lindex $argv $counter]"
- }
- {-xfmodelmono} {
- if {$tkVersion >= 3.0} {
- tk colormodel . monochrome
- }
- }
- {-xfmodelcolor} {
- if {$tkVersion >= 3.0} {
- tk colormodel . color
- }
- }
- {-xfloading} {
- set xfLoadInfo 1
- }
- {-xfnoloading} {
- set xfLoadInfo 0
- }
- {default} {
- lappend tmpArgv [lindex $argv $counter]
- }
- }
- }
- set argv $tmpArgv
- set argc [llength $tmpArgv]
- unset counter
- unset tmpArgv
-
-
- # procedure to show window .
- proc ShowWindow. {args} {# xf ignore me 7
-
- # Window manager configurations
- global tkVersion
- wm positionfrom . user
- wm sizefrom . ""
- wm geometry . 450x250
- wm maxsize . 1024 900
- wm minsize . 0 0
- wm title . {fbrowser}
-
-
- # build widget .frame0
- frame .frame0 \
- -borderwidth {2} \
- -relief {raised}
-
- # build widget .frame0.menubutton3
- menubutton .frame0.menubutton3 \
- -menu {.frame0.menubutton3.m} \
- -text {File}
-
- # build widget .frame0.menubutton3.m
- menu .frame0.menubutton3.m
- .frame0.menubutton3.m add command \
- -command {TkBroRefresh} \
- -label {Refresh}
- .frame0.menubutton3.m add command \
- -command {catch "destroy ."; catch "exit 0"} \
- -label {Quit}
-
- # pack widget .frame0
- pack append .frame0 \
- .frame0.menubutton3 {left frame center}
-
- # build widget .frame1
- frame .frame1 \
- -relief {raised}
-
- # build widget .frame1.label4
- label .frame1.label4 \
- -anchor {w} \
- -padx {2} \
- -relief {raised} \
- -text {/home/garfield/development/xf/demos}
-
- # build widget .frame1.label5
- label .frame1.label5 \
- -padx {2} \
- -relief {raised} \
- -text {}
-
- # pack widget .frame1
- pack append .frame1 \
- .frame1.label4 {left frame center expand fillx} \
- .frame1.label5 {right frame center fillx}
-
- # build widget .frame2
- frame .frame2 \
- -relief {raised}
-
- # build widget .frame2.frame
- frame .frame2.frame
-
- # build widget .frame2.frame.scrollbar2
- scrollbar .frame2.frame.scrollbar2 \
- -command {.frame2.frame.listbox1 yview} \
- -relief {raised}
-
- # build widget .frame2.frame.scrollbar3
- scrollbar .frame2.frame.scrollbar3 \
- -command {.frame2.frame.listbox1 xview} \
- -orient {horizontal} \
- -relief {raised}
-
- # build widget .frame2.frame.listbox1
- listbox .frame2.frame.listbox1 \
- -relief {raised} \
- -xscrollcommand {.frame2.frame.scrollbar3 set} \
- -yscrollcommand {.frame2.frame.scrollbar2 set}
- # bindings
- bind .frame2.frame.listbox1 <Button-1> {TkBroOpen [%W get [%W nearest %y]]}
-
- # pack widget .frame2.frame
- pack append .frame2.frame \
- .frame2.frame.scrollbar2 {left frame center filly} \
- .frame2.frame.listbox1 {top frame center expand fill} \
- .frame2.frame.scrollbar3 {bottom frame center fillx}
-
- # build widget .frame2.frame6
- frame .frame2.frame6
-
- # build widget .frame2.frame6.scrollbar2
- scrollbar .frame2.frame6.scrollbar2 \
- -command {.frame2.frame6.listbox1 yview} \
- -relief {raised}
-
- # build widget .frame2.frame6.scrollbar3
- scrollbar .frame2.frame6.scrollbar3 \
- -command {.frame2.frame6.listbox1 xview} \
- -orient {horizontal} \
- -relief {raised}
-
- # build widget .frame2.frame6.listbox1
- listbox .frame2.frame6.listbox1 \
- -geometry {10x2} \
- -relief {raised} \
- -xscrollcommand {.frame2.frame6.scrollbar3 set} \
- -yscrollcommand {.frame2.frame6.scrollbar2 set}
-
- # pack widget .frame2.frame6
- pack append .frame2.frame6 \
- .frame2.frame6.scrollbar2 {left frame center filly} \
- .frame2.frame6.listbox1 {top frame center expand fill} \
- .frame2.frame6.scrollbar3 {bottom frame center fillx}
-
- # pack widget .frame2
- pack append .frame2 \
- .frame2.frame {left frame center filly} \
- .frame2.frame6 {left frame center expand fill}
-
- # pack widget .
- pack append . \
- .frame0 {top frame center fillx} \
- .frame1 {top frame center fillx} \
- .frame2 {top frame center expand fill}
-
- if {"[info procs XFEdit]" != ""} {
- XFEditSetShowWindows
- XFMiscBindWidgetTree .xfEdit
- }
-
- .frame2.frame.listbox1 insert end {.}
- .frame2.frame.listbox1 insert end {..}
- .frame2.frame.listbox1 insert end {AtFS}
- .frame2.frame.listbox1 insert end {Dependencies}
- .frame2.frame.listbox1 insert end {Hypertext.txt}
- .frame2.frame.listbox1 insert end {Makefile}
- .frame2.frame.listbox1 insert end {Shapefile}
- .frame2.frame.listbox1 insert end {Version}
- .frame2.frame.listbox1 insert end {XFSymName.tcl}
- .frame2.frame.listbox1 insert end {fbrowser.tcl}
-
-
- }
-
-
- # User defined procedures
-
-
- # Procedure: TkBroOpen
- proc TkBroOpen { fname} {
- global curDir
-
- if {[file isdirectory $fname]} {
- cd $fname
- set curDir [pwd]
- TkBroRefresh
- } {
- set thisfile [open $fname r]
- [SymbolicName contentsList] delete 0 end
- [SymbolicName fileName] configure -text $fname
- for { set i 1 } { $i<50 } { incr i } {
- [SymbolicName contentsList] insert end [ gets $thisfile ]
- }
- update
- close $thisfile
- }
- }
-
-
- # Procedure: TkBroRefresh
- proc TkBroRefresh {} {
-
- global curDir
-
- set list [exec ls -a]
- [SymbolicName dirList] delete 0 end
- [SymbolicName contentsList] delete 0 end
- [SymbolicName dirName] configure -text $curDir
- [SymbolicName fileName] configure -text {}
- foreach i $list {
- [SymbolicName dirList] insert end $i
- }
- update
- }
-
-
- # Internal procedures
-
-
- # Procedure: Alias
- proc Alias { args} {
- # xf ignore me 7
- ##########
- # Procedure: Alias
- # Description: establish an alias for a procedure
- # Arguments: args - no argument means that a list of all aliases
- # is returned. Otherwise the first parameter is
- # the alias name, and the second parameter is
- # the procedure that is aliased.
- # Returns: nothing, the command that is bound to the alias or a
- # list of all aliases - command pairs.
- # Sideeffects: internalAliasList is updated, and the alias
- # proc is inserted
- ##########
- global internalAliasList
-
- if {[llength $args] == 0} {
- return $internalAliasList
- } {
- if {[llength $args] == 1} {
- set xfTmpIndex [lsearch $internalAliasList "[lindex $args 0] *"]
- if {$xfTmpIndex != -1} {
- return [lindex [lindex $internalAliasList $xfTmpIndex] 1]
- }
- } {
- if {[llength $args] == 2} {
- eval "proc [lindex $args 0] {args} {#xf ignore me 4
- return \[eval \"[lindex $args 1] \$args\"\]}"
- set xfTmpIndex [lsearch $internalAliasList "[lindex $args 0] *"]
- if {$xfTmpIndex != -1} {
- set internalAliasList [lreplace $internalAliasList $xfTmpIndex $xfTmpIndex "[lindex $args 0] [lindex $args 1]"]
- } {
- lappend internalAliasList "[lindex $args 0] [lindex $args 1]"
- }
- } {
- error "Alias: wrong number or args: $args"
- }
- }
- }
- }
-
-
- # Procedure: GetSelection
- if {"[info procs GetSelection]" == ""} {
- proc GetSelection {} {
- # xf ignore me 7
- ##########
- # Procedure: GetSelection
- # Description: get current selection
- # Arguments: none
- # Returns: none
- # Sideeffects: none
- ##########
-
- # the save way
- set xfSelection ""
- catch "selection get" xfSelection
- if {"$xfSelection" == "selection doesn't exist or form \"STRING\" not defined"} {
- return ""
- } {
- return $xfSelection
- }
- }
- }
-
-
- # Procedure: MenuPopupAdd
- if {"[info procs MenuPopupAdd]" == ""} {
- proc MenuPopupAdd { xfW xfButton xfMenu {xfModifier ""} {xfCanvasTag ""}} {
- # xf ignore me 7
- # the popup menu handling is from (I already gave up with popup handling :-):
- #
- # Copyright 1991,1992 by James Noble.
- # Everyone is granted permission to copy, modify and redistribute.
- # This notice must be preserved on all copies or derivates.
- #
- ##########
- # Procedure: MenuPopupAdd
- # Description: attach a popup menu to widget
- # Arguments: xfW - the widget
- # xfButton - the button we use
- # xfMenu - the menu to attach
- # {xfModifier} - a optional modifier
- # {xfCanvasTag} - a canvas tagOrId
- # Returns: none
- # Sideeffects: none
- ##########
-
- if {"$xfModifier" != ""} {
- set xfPressModifier "$xfModifier-"
- set xfMoveModifier "$xfModifier-"
- set xfReleaseModifier "Any-"
- } {
- set xfPressModifier ""
- set xfMoveModifier ""
- set xfReleaseModifier ""
- }
-
- if {"$xfCanvasTag" == ""} {
- if {[catch "bind $xfW \"<${xfPressModifier}ButtonPress-$xfButton>\" \"$xfMenu post %X %Y\"" xfResult]} {
- if {"[info commands XFProcError]" != ""} {
- XFProcError "$xfResult"
- } {
- puts stdout "$xfResult"
- }
- return
- }
- if {[catch "bind $xfW \"<${xfMoveModifier}B$xfButton-Motion>\" \"MenuPopupHandle $xfMenu %W %X %Y\"" xfResult]} {
- if {"[info commands XFProcError]" != ""} {
- XFProcError "$xfResult"
- } {
- puts stdout "$xfResult"
- }
- return
- }
- # we need these to counteract the effects of passive grabs :-(
- if {[catch "bind $xfW \"<${xfReleaseModifier}ButtonRelease-$xfButton>\" \"$xfMenu invoke active; $xfMenu unpost\"" xfResult]} {
- if {"[info commands XFProcError]" != ""} {
- XFProcError "$xfResult"
- } {
- puts stdout "$xfResult"
- }
- return
- }
- } {
- if {[catch "$xfW bind $xfCanvasTag \"<${xfPressModifier}ButtonPress-$xfButton>\" \"$xfMenu post %X %Y\"" xfResult]} {
- if {"[info commands XFProcError]" != ""} {
- XFProcError "$xfResult"
- } {
- puts stdout "$xfResult"
- }
- return
- }
- if {[catch "$xfW bind $xfCanvasTag \"<${xfMoveModifier}B$xfButton-Motion>\" \"MenuPopupHandle $xfMenu %W %X %Y\"" xfResult]} {
- if {"[info commands XFProcError]" != ""} {
- XFProcError "$xfResult"
- } {
- puts stdout "$xfResult"
- }
- return
- }
- # we need these to counteract the effects of passive grabs :-(
- if {[catch "$xfW bind $xfCanvasTag \"<${xfReleaseModifier}ButtonRelease-$xfButton>\" \"$xfMenu invoke active; $xfMenu unpost\"" xfResult]} {
- if {"[info commands XFProcError]" != ""} {
- XFProcError "$xfResult"
- } {
- puts stdout "$xfResult"
- }
- return
- }
- }
- }
- }
-
-
- # Procedure: MenuPopupHandle
- if {"[info procs MenuPopupHandle]" == ""} {
- proc MenuPopupHandle { xfMenu xfW xfX xfY} {
- # xf ignore me 7
- ##########
- # Procedure: MenuPopupHandle
- # Description: handle the popup menus
- # Arguments: xfMenu - the menu to attach
- # xfW - the widget
- # xfX - the root x coordinate
- # xfY - the root x coordinate
- # Returns: none
- # Sideeffects: none
- ##########
-
- if {"[info commands $xfMenu]" != "" && [winfo ismapped $xfMenu]} {
- set xfPopMinX [winfo rootx $xfMenu]
- set xfPopMaxX [expr $xfPopMinX+[winfo width $xfMenu]]
- if {($xfX >= $xfPopMinX) && ($xfX <= $xfPopMaxX)} {
- $xfMenu activate @[expr $xfY-[winfo rooty $xfMenu]]
- } {
- $xfMenu activate none
- }
- }
- }
- }
-
-
- # Procedure: NoFunction
- if {"[info procs NoFunction]" == ""} {
- proc NoFunction { args} {
- # xf ignore me 7
- ##########
- # Procedure: NoFunction
- # Description: do nothing (especially with scales and scrollbars)
- # Arguments: args - a number of ignored parameters
- # Returns: none
- # Sideeffects: none
- ##########
- }
- }
-
-
- # Procedure: SN
- if {"[info procs SN]" == ""} {
- proc SN { {xfName ""}} {
- # xf ignore me 7
- ##########
- # Procedure: SN
- # Description: map a symbolic name to the widget path
- # Arguments: xfName
- # Returns: the symbolic name
- # Sideeffects: none
- ##########
-
- SymbolicName $xfName
- }
- }
-
-
- # Procedure: SymbolicName
- if {"[info procs SymbolicName]" == ""} {
- proc SymbolicName { {xfName ""}} {
- # xf ignore me 7
- ##########
- # Procedure: SymbolicName
- # Description: map a symbolic name to the widget path
- # Arguments: xfName
- # Returns: the symbolic name
- # Sideeffects: none
- ##########
-
- global symbolicName
-
- if {"$xfName" != ""} {
- set xfArrayName ""
- append xfArrayName symbolicName ( $xfName )
- if {![catch "set \"$xfArrayName\"" xfValue]} {
- return $xfValue
- } {
- if {"[info commands XFProcError]" != ""} {
- XFProcError "Unknown symbolic name:\n$xfName"
- } {
- puts stderr "XF error: unknown symbolic name:\n$xfName"
- }
- }
- }
- return ""
- }
- }
-
-
- # Procedure: Unalias
- proc Unalias { aliasName} {
- # xf ignore me 7
- ##########
- # Procedure: Unalias
- # Description: remove an alias for a procedure
- # Arguments: aliasName - the alias name to remove
- # Returns: none
- # Sideeffects: internalAliasList is updated, and the alias
- # proc is removed
- ##########
- global internalAliasList
-
- set xfIndex [lsearch $internalAliasList "$aliasName *"]
- if {$xfIndex != -1} {
- rename $aliasName ""
- set internalAliasList [lreplace $internalAliasList $xfIndex $xfIndex]
- }
- }
-
-
-
- # application parsing procedure
- proc XFLocalParseAppDefs {xfAppDefFile} {
- global xfAppDefaults
-
- # basically from: Michael Moore
- if {[file exists $xfAppDefFile] &&
- [file readable $xfAppDefFile] &&
- "[file type $xfAppDefFile]" == "link"} {
- catch "file type $xfAppDefFile" xfType
- while {"$xfType" == "link"} {
- if {[catch "file readlink $xfAppDefFile" xfAppDefFile]} {
- return
- }
- catch "file type $xfAppDefFile" xfType
- }
- }
- if {!("$xfAppDefFile" != "" &&
- [file exists $xfAppDefFile] &&
- [file readable $xfAppDefFile] &&
- "[file type $xfAppDefFile]" == "file")} {
- return
- }
- if {![catch "open $xfAppDefFile r" xfResult]} {
- while {[gets $xfResult line] != -1} {
- # backup indicates how far to backup. It applies to the
- # situation where a resource name ends in . and when it
- # ends in *. In the second case you want to keep the *
- # in the widget name for pattern matching, but you want
- # to get rid of the . if it is the end of the name.
- set backup -2
- set line [string trim $line]
- if {[string index $line 0] == "#" || "$line" == ""} {
- # skip comments and empty lines
- continue
- }
- set list [split $line ":"]
- set resource [string trim [lindex $list 0]]
- set i [string last "." $resource]
- set j [string last "*" $resource]
- if {$j > $i} {
- set i $j
- set backup -1
- }
- incr i
- set name [string range $resource $i end]
- incr i $backup
- set widname [string range $resource 0 $i]
- set value [string trim [lindex $list 1]]
- if {"$widname" != "" && "$widname" != "*"} {
- # insert the widget and resourcename to the application
- # defaults list.
- set xfAppDefaults($widname:[string tolower $name]) $value
- }
- }
- }
- }
-
- # application loading procedure
- proc XFLocalLoadAppDefs {xfClasses {xfPriority "startupFile"} {xfAppDefFile ""}} {
- global env
-
- if {"$xfAppDefFile" == ""} {
- set xfFileList ""
- if {[info exists env(XUSERFILESEARCHPATH)]} {
- append xfFileList [split $env(XUSERFILESEARCHPATH) :]
- }
- if {[info exists env(XAPPLRESDIR)]} {
- append xfFileList [split $env(XAPPLRESDIR) :]
- }
- if {[info exists env(XFILESEARCHPATH)]} {
- append xfFileList [split $env(XFILESEARCHPATH) :]
- }
- append xfFileList " /usr/lib/X11/app-defaults"
- append xfFileList " /usr/X11/lib/X11/app-defaults"
-
- foreach xfCounter1 $xfClasses {
- foreach xfCounter2 $xfFileList {
- set xfPathName $xfCounter2
- if {[regsub -all "%N" "$xfPathName" "$xfCounter1" xfResult]} {
- set xfPathName $xfResult
- }
- if {[regsub -all "%T" "$xfPathName" "app-defaults" xfResult]} {
- set xfPathName $xfResult
- }
- if {[regsub -all "%S" "$xfPathName" "" xfResult]} {
- set xfPathName $xfResult
- }
- if {[regsub -all "%C" "$xfPathName" "" xfResult]} {
- set xfPathName $xfResult
- }
- if {[file exists $xfPathName] &&
- [file readable $xfPathName] &&
- ("[file type $xfPathName]" == "file" ||
- "[file type $xfPathName]" == "link")} {
- catch "option readfile $xfPathName $xfPriority"
- if {"[info commands XFParseAppDefs]" != ""} {
- XFParseAppDefs $xfPathName
- } {
- if {"[info commands XFLocalParseAppDefs]" != ""} {
- XFLocalParseAppDefs $xfPathName
- }
- }
- } {
- if {[file exists $xfCounter2/$xfCounter1] &&
- [file readable $xfCounter2/$xfCounter1] &&
- ("[file type $xfCounter2/$xfCounter1]" == "file" ||
- "[file type $xfCounter2/$xfCounter1]" == "link")} {
- catch "option readfile $xfCounter2/$xfCounter1 $xfPriority"
- if {"[info commands XFParseAppDefs]" != ""} {
- XFParseAppDefs $xfCounter2/$xfCounter1
- } {
- if {"[info commands XFLocalParseAppDefs]" != ""} {
- XFLocalParseAppDefs $xfCounter2/$xfCounter1
- }
- }
- }
- }
- }
- }
- } {
- # load a specific application defaults file
- if {[file exists $xfAppDefFile] &&
- [file readable $xfAppDefFile] &&
- ("[file type $xfAppDefFile]" == "file" ||
- "[file type $xfAppDefFile]" == "link")} {
- catch "option readfile $xfAppDefFile $xfPriority"
- if {"[info commands XFParseAppDefs]" != ""} {
- XFParseAppDefs $xfAppDefFile
- } {
- if {"[info commands XFLocalParseAppDefs]" != ""} {
- XFLocalParseAppDefs $xfAppDefFile
- }
- }
- }
- }
- }
-
- # application setting procedure
- proc XFLocalSetAppDefs {{xfWidgetPath "."}} {
- global xfAppDefaults
-
- if {![info exists xfAppDefaults]} {
- return
- }
- foreach xfCounter [array names xfAppDefaults] {
- if {[string match "${xfWidgetPath}*" $xfCounter]} {
- set widname [string range $xfCounter 0 [expr [string first : $xfCounter]-1]]
- set name [string range $xfCounter [expr [string first : $xfCounter]+1] end]
- # Now lets see how many tcl commands match the name
- # pattern specified.
- set widlist [info command $widname]
- if {"$widlist" != ""} {
- foreach widget $widlist {
- # make sure this command is a widget.
- if {![catch "winfo id $widget"]} {
- catch "$widget configure -[string tolower $name] $xfAppDefaults($xfCounter)"
- }
- }
- }
- }
- }
- }
-
-
-
- # end source
- proc EndSrc {} {
- global curDir
-
- set curDir [pwd]
- TkBroRefresh
- }
-
- # prepare auto loading
- global auto_path
- global tk_library
- global xfLoadPath
- set auto_path "[split $xfLoadPath :] $tk_library [info library]"
-
- # initialize global variables
- proc InitGlobals {} {
- global {curDir}
- set {curDir} {/home/garfield/development/xf/demos}
-
- # please don't modify the following
- # variables. They are needed by xf.
- global {autoLoadList}
- set {autoLoadList(fbrowser.tcl)} {0}
- set {autoLoadList(main.tcl)} {0}
- global {internalAliasList}
- set {internalAliasList} {}
- global {moduleList}
- set {moduleList(fbrowser.tcl)} { TkBroOpen TkBroRefresh Alias GetSelection MenuPopupAdd MenuPopupHandle NoFunction SN SymbolicName Unalias .}
- global {preloadList}
- set {preloadList(xfInternal)} {}
- global {symbolicName}
- set {symbolicName(contentsList)} {.frame2.frame6.listbox1}
- set {symbolicName(dirList)} {.frame2.frame.listbox1}
- set {symbolicName(dirName)} {.frame1.label4}
- set {symbolicName(fileName)} {.frame1.label5}
- set {symbolicName(root)} {.}
- global {xfWmSetPosition}
- set {xfWmSetPosition} {}
- global {xfWmSetSize}
- set {xfWmSetSize} {.}
- global {xfAppDefToplevels}
- set {xfAppDefToplevels} {}
- }
-
- # initialize global variables
- InitGlobals
-
- # display/remove toplevel windows.
- ShowWindow.
-
- # load default bindings.
- if {[info exists env(XF_BIND_FILE)] &&
- "[info procs XFShowHelp]" == ""} {
- source $env(XF_BIND_FILE)
- }
-
- # parse and apply application defaults.
- XFLocalLoadAppDefs Fbrowser
- XFLocalSetAppDefs
-
- # end source
- EndSrc
-
- # eof
- #
-
-